### 1.37 `log2`, `log2f`—base 2 logarithm

Synopsis

         #include <math.h>
         double log2(double x);
         float log2f(float x);

Description
The `log2` functions compute the base-2 logarithm of x. A domain error occurs if the argument is less than zero. A range error occurs if the argument is zero.

The Newlib implementations are not full, intrinisic calculations, but rather are derivatives based on `log`. (Accuracy might be slightly off from a direct calculation.) In addition to functions, they are also implemented as macros defined in math.h:

          #define log2(x) (log (x) / _M_LN2)
          #define log2f(x) (logf (x) / (float) _M_LN2)

To use the functions instead, just undefine the macros first.

You can use the (non-ANSI) function `matherr` to specify error handling for these functions, indirectly through the respective `log` function.

Returns
The `log2` functions return `log base-2(`x`)` on success. When x is zero, the returned value is `-HUGE_VAL` and `errno` is set to `ERANGE`. When x is negative, the returned value is NaN (not a number) and `errno` is set to `EDOM`. You can control the error behavior via `matherr`.

Portability
C99, POSIX, System V Interface Definition (Issue 6).